#pragma once

template<typename T>
class TVec2 {
	union {
		struct {
			T x;
			T y;
		};
		T v[2];
	};
	inline TVec2() : x(T(0)), y(T(0)) { }
	inline TVec2(T _x) : x(_x), y(_x) { }
	inline TVec2(T _x, T _y) : x(_x), y(_y) { }
	inline TVec2(T* fv) : x(fv[0]), y(fv[1]) { }
};

typedef TVec2<float> Vec2;
typedef TVec2<int> iVec2;
typedef TVec2<unsigned int> uVec2;
